import { ValueTransformer } from "typeorm";
import { format } from "date-fns";

/**
 * 日期格式转换器，统一时间格式为 yyyy-MM-dd hh:mm:ss
 */
export class DateTransformer implements ValueTransformer {
	/**
	 * 将 JavaScript Date 对象转换为格式化的字符串存储到数据库
	 * 如果值为null或undefined，则使用当前时间
	 */
	to(value: Date | null | undefined): string {
		// 如果值为null或undefined，使用当前时间
		const dateValue = value || new Date();

		// 转换为指定格式的字符串
		return format(dateValue, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 将数据库中的字符串转换为 JavaScript Date 对象
	 */
	from(value: string | Date | null | undefined): Date | null {
		if (value === null || value === undefined) {
			return null;
		}

		// 如果已经是Date对象，直接返回
		if (value instanceof Date) {
			return value;
		}

		// 解析字符串为Date对象
		return new Date(value);
	}
}
